iT邦幫忙

2022 iThome 鐵人賽

DAY 9
0

大概把指標和陣列介紹完以後,就可以帶到所謂的堆疊了
那麼什麼是堆疊呢?
就是FILO(First In Last Out),先進後出
最先進去的元素會是最後一個才出來
https://ithelp.ithome.com.tw/upload/images/20220924/20152495Bk3SRGIvHn.jpg

那麼依照慣例就直接來囉
概念是共分為4個Function且架構盡量相同

  1. isEmpty

顧名思義 看陣列是否為空(是否都pop出去了)

  1. isFull

看陣列是否滿了(是否都push進陣列)

  1. push

將資料放入陣列中

  1. pop

將資料從陣列中取出

#include <stdio.h>
#include <stdlib.h>
#define SIZE 10
#define false 0
#define true 1
int isEmpty(int stack[], int top){
    if(top == -1){
        return true;
    }
    else{
        return false;
    }
}
int isFull(int stack[], int top){
    if(top==(SIZE-1)){
        return true;
    }
    else{
        return false;
    }
}
int push(int stack[], int element, int *topp){
    while(1){
        if(isFull(stack, *topp)){
            printf("isFull now\n");
            break;
        }
        else{
            //*topp=++*topp;
            stack[++*topp]=element;
            element--;

            printf("push = %d \n",stack[*topp]);
        }
    }
}
int pop(int stack[], int *element, int *topp){
    while(1){
        if(isEmpty(stack, *topp)){
            printf("isEmpty now\n");
            break;
        }
        else{
            *element = stack[*topp];
            printf("pop = %d\n",*element);
            *topp = *topp -1;
        }
    }
}
int main(){
    int stack[SIZE];
    int top = -1; //陣列的頭 也就是堆疊的頂端
    int element = 10;

    push(stack,element,&top);
    printf("top = %d\n",top);
    pop(stack,&element,&top);

}

上一篇
[Day8]指標3
下一篇
[Day10]佇列Queue
系列文
環島C一下自己的人生24
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言